Tabele

Swego czasu najbardziej spektakularnym rozszerzeniem jêzyka HTML 1.0 do wersji 2.0 by³o wprowadzenie mo¿liwoœci wyœwietlania danych w postaci tabelarycznej. Trzonem samej tabeli definiowanej w jêzyku HTML jest element <TABLE>...</TABLE>. Standardowo tabela pozbawiona jest krawêdzi. Wystarczy jednak zadeklarowaæ atrybut BORDER w pierwszej etykiecie <TABLE>, a wokó³ tabeli oraz pomiêdzy jej komórkami pojawi¹ siê trójwymiarowe linie. Gdy dodatkowo nadamy temu atrybutowi wartoœæ, okreœlona zostanie gruboœæ ramki obramowuj¹cej tabelê.

Przyjrzyjmy siê zatem prostemu przyk³adowi tabeli:

<TABLE BORDER>
<TR><TH>Nag³ówek 1<TH>Nag³ówek 2<TH>Nag³ówek 3
<TR><TD>1 <TD>abc <TD>ABC
<TR><TD>2 <TD>def <TD>DEF
</TABLE>

Nawet najprostsza tabela powinna posiadaæ nag³ówki


Byæ mo¿e na pocz¹tku nie wygl¹da to zbyt zachêcaj¹co, jednak ju¿ po krótkiej chwili mo¿na zauwa¿yæ, ¿e tabela posiada okreœlon¹ strukturê (dla u³atwienia wpisano w odpowiednich miejscach dodatkowe spacje). Element <TR>, wystêpuj¹cy na pocz¹tku ka¿dej linii, to deklaracja nowego wiersza tabeli. Z kolei nastêpuj¹ce po sobie etykiety <TD> lub <TH> oznaczaj¹ definicjê kolejnych jej komórek w wierszu, po których wpisuje siê tekst (wyœwietlany bezpoœrednio w komórkach). Element <TH> (table header) tym ró¿ni siê od <TD> (table data), ¿e zawartoœæ komórki, któr¹ on reprezentuje wyœwietlana jest pogrubion¹ czcionk¹ i tekst wyrównywany jest do jej œrodka (<TD> wyœwietla tekst w sposób standardowy). Takie komórki nag³ówkowe s¹ najczêœciej u¿ywane do nadawania nazw kolumnom lub wierszom (porównaj przyk³ad).

Czêsto dochodzi do sytuacji, gdy jeden nag³ówek mo¿e opisywaæ wiele kolumn lub wierszy naraz. W profesjonalnych edytorach tekstu obs³uguj¹cych tabele zwykle mo¿emy skorzystaæ z opcji ³¹czenia kilku komórek w jedn¹. W standardzie HTML równie¿ nie zabrak³o takiej mo¿liwoœci. Ilustruje to poni¿szy przyk³ad:

<TABLE BORDER>
<CAPTION> Wydatki w marcu <CAPTION>
<TR><TH ROWSPAN=4>Wydatki<TD>samochód <TD>189
<TR> <TD>mieszkanie<TD>250
<TR> <TD>jedzenie <TD>353
<TR> <TD>dzieci <TD>245
<TR><TD COLSPAN=2>Suma <TD>1037
</TABLE>

Tabela wraz ze zwielokrotnionymi komórkami i podpisem


Tabela ta przedstawia proste zestawienie wydatków domowych rodziny X w marcu. Tak¹ informacjê mo¿emy odczytaæ z opisu tabeli, czyli tekstu zawartego pomiêdzy ogranicznikami elementu <CAPTION>. W tym przypadku tekst opisu wyœwietlany jest nad tabel¹ i wyrównywany centralnie. Oczywiœcie za pomoc¹ atrybutu ALIGN mo¿liwe s¹ pozosta³e warianty justowania. W przypadku wiêkszoœci przegl¹darek dopuszcza siê tylko dwie opcje dla etykiety <CAPTION>: top (domyœlna) oraz bottom (tekst opisu umieszczany jest pod tabel¹).
Na zamieszczonym na tej stronie ekranie komórki „Wydatki" oraz „Suma" sk³adaj¹ siê z wiêkszej liczby mniejszych komórek. Spowodowane jest to tym, ¿e w niektórych elementach <TD> oraz <TH> zosta³y zastosowane specjalne atrybuty ROWSPAN oraz COLSPAN. S¹ one odpowiedzialne za ³¹czenie kilku komórek w jedn¹. Pierwszy ³¹czy komórki znajduj¹ce siê w jednej kolumnie (wyd³u¿enie w dó³), drugi zespala je w ramach jednego wiersza (rozszerzenie na prawo). Wartoœci tych atrybutów okreœlaj¹ liczbê komórek z jakiej bêdzie siê sk³adaæ komórka ³¹czona (domyœlnie przyjmowana jest wartoœæ 1). Podczas konstruowania tabeli i stosowania komórek ³¹czonych nale¿y pamiêtaæ o zachowaniu spójnoœci tabeli. Ka¿de wyd³u¿enie komórki (na przyk³ad w dó³ za pomoc¹ ROWSPAN) poci¹ga za sob¹ koniecznoœæ zmniejszenia deklaracji komórek w kolejnym wierszu lub kolumnie (porównaj przyk³ad). Niezachowanie spójnoœci tabeli prowadzi zwykle do bardzo dziwnych efektów. Przyk³adowo niedopuszczalna jest przedstawiona poni¿ej sytuacja:

<TABLE BORDER>
<TR><TH ROWSPAN=3>Komórka wyd³u¿ona o 2 w dó³ <TD>A
<TR> <TD>B
<TR><TD>X (!!! Element niedopuszczalny !!!) <TD>C
</TABLE>

Istnieje wiele mo¿liwoœci formatowania, wyrównywania tabel i okreœlania sposobu ich wyœwietlania. Jednym z podstawowych parametrów tabeli jest jej wysokoœæ i szerokoœæ. Atrybutami odpowiedzialnymi za te wielkoœci s¹ znane nam ju¿ WIDTH oraz HEIGHT umieszczane w deklaracji elementu <TABLE>. Jako ich wartoœæ mo¿e byæ podawana liczba pikseli oraz wartoœæ procentowa, odnosz¹ca siê do parametrów okna przegl¹darki. Przyk³ad:

<TABLE BORDER WIDTH=50% HEIGHT=200>

Ka¿dy element <TD> oraz <TH> mo¿e byæ równie¿ dodatkowo „wyposa¿ony" w powy¿sze atrybuty. W tym przypadku wartoœci procentowe odwo³uj¹ siê do parametrów wielkoœci samej tabeli.

Za odleg³oœæ pomiêdzy komórkami odpowiedzialny jest CELLSPACE. Zwykle towarzyszy mu atrybut o podobnej nazwie (CELLPADDING), który ustala wielkoœæ „marginesu", jaki jest przydzielany zawartoœci wszystkich komórek (tzn. odleg³oœci tekstu od krawêdzi komórki). Na przyk³ad:

<TABLE BORDER=2 CELLSPACE=1 CELLPADDING=5>

Wspomniano ju¿ mo¿liwoœci wyrównywania tabeli wzglêdem ca³ego dokumentu. Jak zwykle, do pracy zostaje zaprzêgniêty atrybut ALIGN dopuszczaj¹cy w tym przypadku dwie wartoœci left oraz right, co powoduje identyczne zachowanie tabeli jak by³o to w przypadku elementu <IMG> z zastosowaniem podobnych parametrów (porównaj kilka stron wy¿ej). Warto równie¿ pamiêtaæ o elemencie <BR> z atrybutem CLEAR.

Co siê zaœ tyczy formatowania zawartoœci pojedynczych komórek, to tutaj równie¿ mo¿na dysponowaæ narzêdziami do wyrównywania tekstu. Odbywa siê to podobnie jak to by³o w przypadku elementu opisu tabeli (porównaj etykieta <CAPTION>). Dla elementów <TR>, <TD> oraz <TH> mo¿na stosowaæ atrybut ALIGN z wartoœciami left, right oraz center (wyrównanie w poziomie odpowiednio do krawêdzi lewej, prawej oraz œrodka komórki). Dostêpny jest równie¿ atrybut VALIGN z parametrami top (górna krawêdŸ komórki) i bottom (dolna krawêdŸ komórki). Gdy u¿yje siê ich dla elementu <TR>, wszystkie komórki w tym wierszu bêd¹ posiada³y takie same w³aœciwoœci.

Warto na koniec podkreœliæ, ¿e zawartoœæ poszczególnych komórek nie musi stanowiæ czystego tekstu. Praktycznie mo¿liwe jest wstawienie do tabeli prawie ka¿dego elementu HTML (na przyk³ad odnoœników, obrazków, a nawet innych tabel). Pozwala to na uzyskanie bardzo ciekawych efektów i daje du¿e mo¿liwoœci eksperymentowania, co z pewnoœci¹ mo¿e zachwyciæ niejednego fana WWW.